package pe.com.cotelasa.scp.controlador.backingBean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;

import javax.inject.Named;

import org.springframework.context.annotation.Scope;

import pe.com.cotelasa.scp.common.IObserver;
import pe.com.cotelasa.scp.entidad.ParametroDetalle;
import pe.com.cotelasa.scp.entidad.Proveedor;
import pe.com.cotelasa.scp.entidad.Sede;
import pe.com.cotelasa.scp.to.ProveedorTO;

@SuppressWarnings("serial")
@Named(value = "BKCompDirLocProv")
@Scope("session")
public class BKCompDirLocProv implements Serializable {

    private String idTipoProveedorBusqueda;
    private Proveedor proveedorBusqueda;
    private Collection<ParametroDetalle> listaTipoProveedor;
    private Collection<ProveedorTO> listaProveedores;
    private Collection<ProveedorTO> listarProveedorPorTipo;
    private Collection<Sede> listaLocProv;
    private Boolean enableCbxProveedor;
    private Collection<IObserver> observers;
    private Collection<Sede> sedesPorEmpresa;
    private SedeSubjectWrapper subject;

    public class SedeSubjectWrapper {

        private String idObserver;
        private Sede sedeCurrent;

        public String getIdObserver() {
            return idObserver;
        }

        public void setIdObserver(String idObserver) {
            this.idObserver = idObserver;
        }

        public Sede getSedeCurrent() {
            return sedeCurrent;
        }

        public void setSedeCurrent(Sede sedeCurrent) {
            this.sedeCurrent = sedeCurrent;
        }
    }

    public SedeSubjectWrapper getSubject() {
        return subject;
    }

    public void setSubject(SedeSubjectWrapper subject) {
        this.subject = subject;
    }

    public BKCompDirLocProv() {
        this.proveedorBusqueda = null;
        subject = new SedeSubjectWrapper();
        observers = new ArrayList<IObserver>();
        enableCbxProveedor = new Boolean(false);
    }

    public void initSedeSubject() {
        subject = new SedeSubjectWrapper();
    }

    public Collection<ParametroDetalle> getListaTipoProveedor() {
        return listaTipoProveedor;
    }

    public void setListaTipoProveedor(
            Collection<ParametroDetalle> listaTipoProveedor) {
        this.listaTipoProveedor = listaTipoProveedor;
    }

    public String getIdTipoProveedorBusqueda() {
        return idTipoProveedorBusqueda;
    }

    public void setIdTipoProveedorBusqueda(String idTipoProveedorBusqueda) {
        this.idTipoProveedorBusqueda = idTipoProveedorBusqueda;
    }

    public Proveedor getProveedorBusqueda() {
        return proveedorBusqueda;
    }

    public void setProveedorBusqueda(Proveedor proveedorBusqueda) {
        this.proveedorBusqueda = proveedorBusqueda;
    }

    public Collection<ProveedorTO> getListaProveedores() {
        return listaProveedores;
    }

    public void setListaProveedores(Collection<ProveedorTO> listaProveedores) {
        this.listaProveedores = listaProveedores;
    }

    public Collection<Sede> getListaLocProv() {
        return listaLocProv;
    }

    public void setListaLocProv(Collection<Sede> listaLocProv) {
        this.listaLocProv = listaLocProv;
    }

    public void setListaALLProveedores(
            Collection<ProveedorTO> listarProveedorPorTipo) {
        this.listarProveedorPorTipo = listarProveedorPorTipo;
    }

    public Collection<ProveedorTO> getListaALLProveedores() {
        return this.listarProveedorPorTipo;
    }

    public void addObservers(IObserver observador) {
        observers.add(observador);
    }

    public Collection<IObserver> getObservers() {
        return this.observers;
    }

    public Sede getSedeCurrent() {
        return subject.sedeCurrent;
    }

    public void setSedeCurrent(Sede sedeCurrent) {
        this.subject.sedeCurrent = sedeCurrent;
    }

    public Boolean getEnableCbxProveedor() {
        return enableCbxProveedor;
    }

    public void setEnableCbxProveedor(Boolean enableCbxProveedor) {
        this.enableCbxProveedor = enableCbxProveedor;
    }

    public Collection<Sede> getSedesPorEmpresa() {
        return sedesPorEmpresa;
    }

    public void setSedesPorEmpresa(Collection<Sede> sedesPorEmpresa) {
        this.sedesPorEmpresa = sedesPorEmpresa;
    }
}
